home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
develop
/
symcoff.arc
/
PLAHREAD.C
< prev
next >
Wrap
Text File
|
1989-05-02
|
4KB
|
81 lines
static char *sccsid[]={"@(#)pldahread.c 2.1",
"Copyright 1985 by Motorola Inc."};
#include <stdio.h>
#ifdef PCPORT
#include <stdlib.h>
#include "pcport.h" /*PC-PORT*/
#endif
#include "par.h"
#include "pfilehdr.h"
#include "pldfcn.h"
#include "pldf_dcl.h" /*PC-PORT*/
/*********************** PLDAHREAD *************************************gs##*/
/* ##*/
/* ##*/
/* Written by: Michael Greenberg - MIL ##*/
/* ##*/
/* ACTION: ##*/
/* Read the archive header of a member of an archive file. ##*/
/* ##*/
/* SYNOPSIS: ##*/
int pldahread(ldptr, arhead) /*##*/
/* ---------------------------- ##*/
register LDFILE *ldptr; /*##*/
register ARCHDR *arhead; /*##*/
/* ##*/
/*************************************************************************##*/
{
register char *p, *q;
register int i;
#ifndef PCPORT
long atol();
#endif
struct ar_hdr arhdr;
if(TYPE(ldptr) != PLDARMAG)
return(FAILURE);
fseek(IOPTR(ldptr), (long) (OFFSET(ldptr) - sizeof (struct ar_hdr)), 0);
if(fread(&arhdr, sizeof(struct ar_hdr), 1, IOPTR(ldptr)) != 1)
return(FAILURE);
for(p=arhead->ar_name, q=arhdr.ar_name, i=0;i++ < 14;p++)
if((*p = *q++) == '/')
break;
--i;
while(i++ < 14)
*p++ = NULL;
arhead->ar_date = atol(arhdr.ar_date);
arhead->ar_uid = atoi(arhdr.ar_uid);
arhead->ar_gid = atoi(arhdr.ar_gid);
arhead->ar_mode = atol(arhdr.ar_mode);
arhead->ar_size = atol(arhdr.ar_size);
}
/****************** _FLDAHREAD *****************************************gs##*/
/* ##*/
/* ACTION: ##*/
/* Read the archive header record of an archive member and return ##*/
/* the size of the member. ##*/
/* ##*/
/* SYNOPSIS: ##*/
int _fpldahread(ldptr) /*##*/
/* ---------------------- ##*/
register LDFILE *ldptr; /*##*/
/* ##*/
/*************************************************************************##*/
{
struct ar_hdr arhdr;
if(TYPE(ldptr) != PLDARMAG)
return(FAILURE);
fseek(IOPTR(ldptr), (long) (OFFSET(ldptr) - sizeof (struct ar_hdr)), 0);
if(fread(&arhdr, sizeof(struct ar_hdr), 1, IOPTR(ldptr)) != 1)
return(FAILURE);
return(atoi(arhdr.ar_size));
}
/* Copyright 1985 by Motorola Inc. */